﻿/*
 * Copyright (C) 2010 The Libphonenumber Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* todo make this file automatically generated by {@link BuildMetadataProtoFromXml}.
 */

using System.Collections.Generic;

namespace PhoneNumbers
{
    public static class CountryCodeToRegionCodeMap
    {
        // A mapping from a country code to the region codes which denote the
        // country/region represented by that country code. In the case of multiple
        // countries sharing a calling code, such as the NANPA countries, the one
        // indicated with "isMainCountryForCode" in the metadata should be first.
        internal static Dictionary<int, List<string>> GetCountryCodeToRegionCodeMap()
            // The capacity is set to 286 as there are 215 different entries,
            // and this offers a load factor of roughly 0.75.
            => new Dictionary<int, List<string>>(286)
            {
                { 1, new List<string>(25)
                    {
                        "US",
                        "AG",
                        "AI",
                        "AS",
                        "BB",
                        "BM",
                        "BS",
                        "CA",
                        "DM",
                        "DO",
                        "GD",
                        "GU",
                        "JM",
                        "KN",
                        "KY",
                        "LC",
                        "MP",
                        "MS",
                        "PR",
                        "SX",
                        "TC",
                        "TT",
                        "VC",
                        "VG",
                        "VI"
                    }},
                { 7, new List<string>(2)
                    {
                        "RU",
                        "KZ"
                    }},
                { 20, new List<string>(1) { "EG" }},
                { 27, new List<string>(1) { "ZA" }},
                { 30, new List<string>(1) { "GR" }},
                { 31, new List<string>(1) { "NL" }},
                { 32, new List<string>(1) { "BE" }},
                { 33, new List<string>(1) { "FR" }},
                { 34, new List<string>(1) { "ES" }},
                { 36, new List<string>(1) { "HU" }},
                { 39, new List<string>(2)
                    {
                        "IT",
                        "VA"
                    }},
                { 40, new List<string>(1) { "RO" }},
                { 41, new List<string>(1) { "CH" }},
                { 43, new List<string>(1) { "AT" }},
                { 44, new List<string>(4)
                    {
                        "GB",
                        "GG",
                        "IM",
                        "JE"
                    }},
                { 45, new List<string>(1) { "DK" }},
                { 46, new List<string>(1) { "SE" }},
                { 47, new List<string>(2)
                    {
                        "NO",
                        "SJ"
                    }},
                { 48, new List<string>(1) { "PL" }},
                { 49, new List<string>(1) { "DE" }},
                { 51, new List<string>(1) { "PE" }},
                { 52, new List<string>(1) { "MX" }},
                { 53, new List<string>(1) { "CU" }},
                { 54, new List<string>(1) { "AR" }},
                { 55, new List<string>(1) { "BR" }},
                { 56, new List<string>(1) { "CL" }},
                { 57, new List<string>(1) { "CO" }},
                { 58, new List<string>(1) { "VE" }},
                { 60, new List<string>(1) { "MY" }},
                { 61, new List<string>(3)
                    {
                        "AU",
                        "CC",
                        "CX"
                    }},
                { 62, new List<string>(1) { "ID" }},
                { 63, new List<string>(1) { "PH" }},
                { 64, new List<string>(1) { "NZ" }},
                { 65, new List<string>(1) { "SG" }},
                { 66, new List<string>(1) { "TH" }},
                { 81, new List<string>(1) { "JP" }},
                { 82, new List<string>(1) { "KR" }},
                { 84, new List<string>(1) { "VN" }},
                { 86, new List<string>(1) { "CN" }},
                { 90, new List<string>(1) { "TR" }},
                { 91, new List<string>(1) { "IN" }},
                { 92, new List<string>(1) { "PK" }},
                { 93, new List<string>(1) { "AF" }},
                { 94, new List<string>(1) { "LK" }},
                { 95, new List<string>(1) { "MM" }},
                { 98, new List<string>(1) { "IR" }},
                { 211, new List<string>(1) { "SS" }},
                { 212, new List<string>(2)
                    {
                        "MA",
                        "EH"
                    }},
                { 213, new List<string>(1) { "DZ" }},
                { 216, new List<string>(1) { "TN" }},
                { 218, new List<string>(1) { "LY" }},
                { 220, new List<string>(1) { "GM" }},
                { 221, new List<string>(1) { "SN" }},
                { 222, new List<string>(1) { "MR" }},
                { 223, new List<string>(1) { "ML" }},
                { 224, new List<string>(1) { "GN" }},
                { 225, new List<string>(1) { "CI" }},
                { 226, new List<string>(1) { "BF" }},
                { 227, new List<string>(1) { "NE" }},
                { 228, new List<string>(1) { "TG" }},
                { 229, new List<string>(1) { "BJ" }},
                { 230, new List<string>(1) { "MU" }},
                { 231, new List<string>(1) { "LR" }},
                { 232, new List<string>(1) { "SL" }},
                { 233, new List<string>(1) { "GH" }},
                { 234, new List<string>(1) { "NG" }},
                { 235, new List<string>(1) { "TD" }},
                { 236, new List<string>(1) { "CF" }},
                { 237, new List<string>(1) { "CM" }},
                { 238, new List<string>(1) { "CV" }},
                { 239, new List<string>(1) { "ST" }},
                { 240, new List<string>(1) { "GQ" }},
                { 241, new List<string>(1) { "GA" }},
                { 242, new List<string>(1) { "CG" }},
                { 243, new List<string>(1) { "CD" }},
                { 244, new List<string>(1) { "AO" }},
                { 245, new List<string>(1) { "GW" }},
                { 246, new List<string>(1) { "IO" }},
                { 247, new List<string>(1) { "AC" }},
                { 248, new List<string>(1) { "SC" }},
                { 249, new List<string>(1) { "SD" }},
                { 250, new List<string>(1) { "RW" }},
                { 251, new List<string>(1) { "ET" }},
                { 252, new List<string>(1) { "SO" }},
                { 253, new List<string>(1) { "DJ" }},
                { 254, new List<string>(1) { "KE" }},
                { 255, new List<string>(1) { "TZ" }},
                { 256, new List<string>(1) { "UG" }},
                { 257, new List<string>(1) { "BI" }},
                { 258, new List<string>(1) { "MZ" }},
                { 260, new List<string>(1) { "ZM" }},
                { 261, new List<string>(1) { "MG" }},
                { 262, new List<string>(2)
                    {
                        "RE",
                        "YT"
                    }},
                { 263, new List<string>(1) { "ZW" }},
                { 264, new List<string>(1) { "NA" }},
                { 265, new List<string>(1) { "MW" }},
                { 266, new List<string>(1) { "LS" }},
                { 267, new List<string>(1) { "BW" }},
                { 268, new List<string>(1) { "SZ" }},
                { 269, new List<string>(1) { "KM" }},
                { 290, new List<string>(2)
                    {
                        "SH",
                        "TA"
                    }},
                { 291, new List<string>(1) { "ER" }},
                { 297, new List<string>(1) { "AW" }},
                { 298, new List<string>(1) { "FO" }},
                { 299, new List<string>(1) { "GL" }},
                { 350, new List<string>(1) { "GI" }},
                { 351, new List<string>(1) { "PT" }},
                { 352, new List<string>(1) { "LU" }},
                { 353, new List<string>(1) { "IE" }},
                { 354, new List<string>(1) { "IS" }},
                { 355, new List<string>(1) { "AL" }},
                { 356, new List<string>(1) { "MT" }},
                { 357, new List<string>(1) { "CY" }},
                { 358, new List<string>(2)
                    {
                        "FI",
                        "AX"
                    }},
                { 359, new List<string>(1) { "BG" }},
                { 370, new List<string>(1) { "LT" }},
                { 371, new List<string>(1) { "LV" }},
                { 372, new List<string>(1) { "EE" }},
                { 373, new List<string>(1) { "MD" }},
                { 374, new List<string>(1) { "AM" }},
                { 375, new List<string>(1) { "BY" }},
                { 376, new List<string>(1) { "AD" }},
                { 377, new List<string>(1) { "MC" }},
                { 378, new List<string>(1) { "SM" }},
                { 380, new List<string>(1) { "UA" }},
                { 381, new List<string>(1) { "RS" }},
                { 382, new List<string>(1) { "ME" }},
                { 383, new List<string>(1) { "XK" }},
                { 385, new List<string>(1) { "HR" }},
                { 386, new List<string>(1) { "SI" }},
                { 387, new List<string>(1) { "BA" }},
                { 389, new List<string>(1) { "MK" }},
                { 420, new List<string>(1) { "CZ" }},
                { 421, new List<string>(1) { "SK" }},
                { 423, new List<string>(1) { "LI" }},
                { 500, new List<string>(1) { "FK" }},
                { 501, new List<string>(1) { "BZ" }},
                { 502, new List<string>(1) { "GT" }},
                { 503, new List<string>(1) { "SV" }},
                { 504, new List<string>(1) { "HN" }},
                { 505, new List<string>(1) { "NI" }},
                { 506, new List<string>(1) { "CR" }},
                { 507, new List<string>(1) { "PA" }},
                { 508, new List<string>(1) { "PM" }},
                { 509, new List<string>(1) { "HT" }},
                { 590, new List<string>(3)
                    {
                        "GP",
                        "BL",
                        "MF"
                    }},
                { 591, new List<string>(1) { "BO" }},
                { 592, new List<string>(1) { "GY" }},
                { 593, new List<string>(1) { "EC" }},
                { 594, new List<string>(1) { "GF" }},
                { 595, new List<string>(1) { "PY" }},
                { 596, new List<string>(1) { "MQ" }},
                { 597, new List<string>(1) { "SR" }},
                { 598, new List<string>(1) { "UY" }},
                { 599, new List<string>(2)
                    {
                        "CW",
                        "BQ"
                    }},
                { 670, new List<string>(1) { "TL" }},
                { 672, new List<string>(1) { "NF" }},
                { 673, new List<string>(1) { "BN" }},
                { 674, new List<string>(1) { "NR" }},
                { 675, new List<string>(1) { "PG" }},
                { 676, new List<string>(1) { "TO" }},
                { 677, new List<string>(1) { "SB" }},
                { 678, new List<string>(1) { "VU" }},
                { 679, new List<string>(1) { "FJ" }},
                { 680, new List<string>(1) { "PW" }},
                { 681, new List<string>(1) { "WF" }},
                { 682, new List<string>(1) { "CK" }},
                { 683, new List<string>(1) { "NU" }},
                { 685, new List<string>(1) { "WS" }},
                { 686, new List<string>(1) { "KI" }},
                { 687, new List<string>(1) { "NC" }},
                { 688, new List<string>(1) { "TV" }},
                { 689, new List<string>(1) { "PF" }},
                { 690, new List<string>(1) { "TK" }},
                { 691, new List<string>(1) { "FM" }},
                { 692, new List<string>(1) { "MH" }},
                { 800, new List<string>(1) { "001" }},
                { 808, new List<string>(1) { "001" }},
                { 850, new List<string>(1) { "KP" }},
                { 852, new List<string>(1) { "HK" }},
                { 853, new List<string>(1) { "MO" }},
                { 855, new List<string>(1) { "KH" }},
                { 856, new List<string>(1) { "LA" }},
                { 870, new List<string>(1) { "001" }},
                { 878, new List<string>(1) { "001" }},
                { 880, new List<string>(1) { "BD" }},
                { 881, new List<string>(1) { "001" }},
                { 882, new List<string>(1) { "001" }},
                { 883, new List<string>(1) { "001" }},
                { 886, new List<string>(1) { "TW" }},
                { 888, new List<string>(1) { "001" }},
                { 960, new List<string>(1) { "MV" }},
                { 961, new List<string>(1) { "LB" }},
                { 962, new List<string>(1) { "JO" }},
                { 963, new List<string>(1) { "SY" }},
                { 964, new List<string>(1) { "IQ" }},
                { 965, new List<string>(1) { "KW" }},
                { 966, new List<string>(1) { "SA" }},
                { 967, new List<string>(1) { "YE" }},
                { 968, new List<string>(1) { "OM" }},
                { 970, new List<string>(1) { "PS" }},
                { 971, new List<string>(1) { "AE" }},
                { 972, new List<string>(1) { "IL" }},
                { 973, new List<string>(1) { "BH" }},
                { 974, new List<string>(1) { "QA" }},
                { 975, new List<string>(1) { "BT" }},
                { 976, new List<string>(1) { "MN" }},
                { 977, new List<string>(1) { "NP" }},
                { 979, new List<string>(1) { "001" }},
                { 992, new List<string>(1) { "TJ" }},
                { 993, new List<string>(1) { "TM" }},
                { 994, new List<string>(1) { "AZ" }},
                { 995, new List<string>(1) { "GE" }},
                { 996, new List<string>(1) { "KG" }},
                { 998, new List<string>(1) { "UZ" }}
            };
    }
}
